;:poke56,128:clr
;:sys36864
	;.opt oo
vic	=$d000
cint	=65409
clall	=$ffe7
second	=$ff93
tksa	=$ff96
acptr	=$ffa5
ciout	=$ffa8
untlk	=$ffab
unlsn	=$ffae
listen	=$ffb1
talk	=$ffb4
print	=$ffd2
get	=65508
setcur	=58732
clrscr	=$e544
axout	=$bdcd
return	=$aad7
space	=$ab3f
sc1	=$400
sc2	=1984
f	=55296-sc1
lock	=$291
bild	=$d1
farb	=$f3
farbram	=$ea24
pifout	=$ea1e
calcx	=$e9f0
rot	=2
gelb	=7
gruen	=1
color	=646
strout	=$ab1e
tmp	=2
tmp2	=4
sa	=$b9
fa	=$ba
bifout	=$ea1c
spalte	=211
zeile	=214
ctr	=247
dmem	=$400
dprg	=$8000
key	=198
uhr	=$a2
plot	=$fff0
data	=704
huck	=$46db
best	=300
zehntel	=248
latch	=249
mode	=181
erg	=820
track	=6
half	=182
sc3	=1936
sc4	=1198
sc5	=1219
sc6	=1124
headup	=$5b3
	jmp run
mw	.byte "w-m"
mr	.byte "r-m"
me	.byte "e-m"
hext	.byte "0123456789abcdef"
tix	.byte "\x13\x11\x1d\x97justage- und geschwindigkeitstest 1541"
	.byt 13
	.byte "\x1dvon nikolaus heusler (c) nh-010191-arr"
	brk
lint	.byt 13
	.byte "\x05L\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf\xaf"
	brk
maint	.byte "\x97\x13\x11\x11\x11\x11\x11\x11\x11\x11\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x12 1 \x92 disk-rotations-"
	.byt 13
	.byte "\x11\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1dgeschwindigkeits-test"
	.byt 13
	.byte "\x11\x11\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x12 2 \x92 justage-pruefung"
	.byt 13
	.byte "\x11\x11\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x12 q \x92 programmende"
	brk
untxt	.byte "\x05O\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7\xb7"
	brk
untxt2	.byte "\x97bitte durch tastendruck waehlen!"
	.byt 13,0
untxt3	.byte "programmversion v1 01.91"
	brk
sptx	.byte "\x13\x11\x1d\x97    rotations-geschwindigkeitstest"
	brk
spanl	.byte "\x97\x13\x11\x11\x11\x11\x11\x11\x11\x11\x1d\x1dgemessen  wird  die geschwindigkeit,"
	.byt 13
	.byte "\x11\x1d\x1dmit der die diskette gedreht wird."
diskin	.byt 13
	.byte "\x11\x11\x1d\x1dbitte  legen  sie  eine  formatierte"
	.byt 13
	.byte "\x11\x1d\x1ddiskette ein!"
	brk
sweit	.byt 13
	.byte "\x11\x11\x1d\x1dweiter mit taste       \x12 q \x92 - abbruch"
	brk
tasfer	.byte "\x97bitte taste druecken wenn fertig"
	brk
spdhead	.byte "\x13\x11\x11\x11\x11\x11\x1d\x97sollwert rpm\x05\xdd\x97istwert rpm\x05\xdd\x97differenz r"
	.byte "pm"
	.byt 13
	.byte "\x05\x1d\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xb1\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xb1\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0"
	.byt 13,0
dife	.byte "diskfehler nr. "
	brk
dh	.byte "\x1d\x1d\x1d\x1d\x1d\x05300.0\x1d\x1d\x1d\x1d"
	brk
altx	.byte "\x13\x11\x1d\x97           kopfjustage-test"
	brk
alanl	.byte "\x97\x13\x11\x11\x11\x11\x11\x1d\x1dgeprueft wird,  ob der schreib-lese-"
	.byt 13
	.byte "\x11\x1d\x1dkopf des laufwerks dejustiert ist."
	brk
aweit	.byt 13
	.byte "\x11\x11\x1d\x1d\x12 j \x92 justagetest alle tracks"
	.byt 13
	.byte "\x11\x1d\x1d\x12 1 \x92 justagetest track 1"
	.byt 13
	.byte "\x11\x1d\x1d\x12 w \x92 justagetest endlos"
	.byt 13
	.byte "\x11\x1d\x1d\x12 q \x92 abbruch    \x12 h \x92 halftracks an/aus\x11"
	.byte "\x9d\x9d\x9d\x9d\x9d\x9d      "
	brk
abild	.byte "\x13\x11\x1d\x97a:geprueft. track  c:track-lesbarkeit"
	.byt 13
	.byte "\x1db:gelesener track  d:halftr.-lesbark."
	.byt 13,13
	.byte "\x1d -a- -b- -c- -d-   \x05\xdd\x97  -a- -b- -c- -d-"
	.byt 13
	.byte "\x05\x1d\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xdb\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0"
	.byt 13,0
bittet	.byte "\x12\x97(taste druecken)\x92"
	brk
clrscn	jsr clrscr
	ldx #79
	stx sc1
	inx
	stx sc1+39
	lda #76
	sta sc2
	lda #122
	sta sc2+39
	lda #1
	ldy #39
f1	sta sc1+f,y
	sta sc2+f,y
	dey
	bpl f1
	ldy #37
c1	lda #119
	sta sc1+1,y
	lda #111
	sta sc2+1,y
	dey
	bpl c1
	ldx #1
c2	jsr calcx
	jsr farbram
	txa
	pha
	lda #116
	ldy #0
	ldx #1
	jsr pifout
	ldy #39
	lda #106
	jsr pifout
	pla
	tax
	inx
	cpx #24
	bcc c2
	rts
plot0	ldy #0
	clc
	jmp plot
center	pha
	txa
	lsr
	sec
	sbc #21
	eor #-1
	sta spalte
	pla
	jmp strout
title	jsr clrscn
	lda #<tix
	ldy #>tix
	jsr strout
line	lda #<lint
	ldy #>lint
	jsr strout
	lda #122
	ldx #1
	jmp bifout
unline	jsr plot0
	lda #<untxt
	ldy #>untxt
	jsr strout
	ldx #1
	lda #80
	jsr bifout
	jmp return
unten2	ldx #32
	lda #<untxt2
	ldy #>untxt2
	jsr center
	ldx #24
	lda #<untxt3
	ldy #>untxt3
	jmp center
tasfert	jsr clrscn
	ldx #22
	jsr unline
	ldx #32
	lda #<tasfer
	ldy #>tasfer
	bne center
unten	ldx #21
	jsr unline
	bne unten2
hexout	pha
	lsr
	lsr
	lsr
	lsr
	jsr hex1
	pla
hex1	and #15
	tax
	lda hext,x
	jmp print
info	lda half
	bne haus
	ldx #32
	ldy #99
	bne han
haus	ldy #32
	ldx #99
han	stx sc3
	stx sc3+1
	sty sc3+3
	sty sc3+4
	sty sc3+5
	rts
befrei	lda half
	bne mitdrin
erase	lda #32
	sta sc4
	sta sc4+1
	sta sc4+2
	sta sc5
	sta sc5+1
	sta sc5+2
	ldy #17
loop	sta sc6,y
	dey
	bpl loop
doned	rts
mitdrin	lda mode
	cmp #1
	beq erase
	bne doned
talk15	jsr unlsn
	lda fa
	jsr talk
	lda #$6f
	sta sa
	jmp tksa
list15	lda fa
	jsr listen
	lda #$6f
	sta sa
	jmp second
mwrite	jsr list15
	ldy #2
mwr	lda mw,y
	jsr ciout
	dey
	bpl mwr
	rts
mread	jsr list15
	ldy #2
mre	lda mr,y
	jsr ciout
	dey
	bpl mre
	rts
mexec	jsr list15
	ldy #2
mex	lda me,y
	jsr ciout
	dey
	bpl mex
	rts
start	pha
	jsr mexec
	pla
	jsr ciout
	lda #>dmem
	jsr ciout
	jmp unlsn
key0	lda #0
	sta key
	rts
colfor	sta color
formnum	cpx #100
	bcs x0out
	cpx #10
	bcs f10
	jsr space
f10	jsr space
x0out	lda #0
	jmp axout
readerg	jsr start
	jsr mread
	lda #$e0
	jsr ciout
	lda #6
	jsr ciout
	lda #20
	jsr ciout
	jsr talk15
	ldy #0
re	jsr acptr
	sta erg,y
	iny
	cpy #20
	bne re
	jsr untlk
	ldy #0
	sty data+2
	sty data+3
	sty data+1
	lda #16
	sta data
add	iny
	cpy #17
	beq added
	lda data+2
	clc
	adc erg,y
	sta data+2
	bcc add
	inc data+3
	bne add
added	lda #0
	sta latch
	sta latch+1
	ldx #16
po1	asl data+2
	rol data+3
	rol latch
	rol latch+1
	lda latch
	sec
	sbc data
	tay
	lda latch+1
	sbc data+1
	bcc po2
	inc data+2
	sta latch+1
	sty latch
po2	dex
	bne po1
	jmp get
run	lda #128
	sta lock
	jsr cint
	jsr clall
	ldx #11
	stx vic+32
	inx
	stx vic+33
	jsr title
	lda fa
	cmp #8
	bcc set8
	cmp #12
	bcc is8
set8	lda #8
	sta fa
is8	lda #22
	sta ctr
	lda #0
	ldy #>dmem
	sta tmp
	sty tmp+1
	lda #<dprg
	ldy #>dprg
	sta tmp2
	sty tmp2+1
transmc	jsr mwrite
	lda tmp
	jsr ciout
	lda tmp+1
	jsr ciout
	lda #32
	jsr ciout
	ldy #0
msend	lda (tmp2),y
	jsr ciout
	iny
	cpy #32
	bcc msend
	tya
	clc
	adc tmp
	sta tmp
	bcc noinc1
	inc tmp+1
noinc1	tya
	clc
	adc tmp2
	sta tmp2
	bcc noinc2
	inc tmp2+1
noinc2	jsr unlsn
	dec ctr
	bne transmc
	lda #-1
	sta half
mainmenu	jsr title
	lda #<maint
	ldy #>maint
	jsr strout
	jsr unten
	jsr key0
meng	jsr get
	cmp #"q"
	beq quit
	cmp #"1"
	beq speed
	cmp #"2"
	bne meng
	jmp align
quit	jsr list15
	lda #"i"
	jsr ciout
	lda #"0"
	jsr ciout
	jsr unlsn
	jsr list15
	lda #"u"
	jsr ciout
	lda #":"
	jsr ciout
	lda #0
	sta uhr
wartfert	lda uhr
	cmp #64
	bmi wartfert
	jsr unlsn
	jsr clall
	jmp cint
speed	jsr clrscn
	lda #<sptx
	ldy #>sptx
	jsr strout
	jsr line
	lda #<spanl
	ldy #>spanl
	jsr strout
	lda #<sweit
	ldy #>sweit
	jsr strout
	jsr key0
waitq	jsr get
	beq waitq
	cmp #"q"
	bne miss
	jmp mainmenu
miss	jsr tasfert
	lda #<sptx
	ldy #>sptx
	jsr strout
	jsr line
	lda #<spdhead
	ldy #>spdhead
	jsr strout
	lda #18
spdloop	jsr start
	jsr mread
	lda #$e0
	jsr ciout
	lda #6
	jsr ciout
	lda #5
	jsr ciout
	jsr talk15
	ldy #5
holit	jsr acptr
	sta data-1,y
	dey
	bne holit
	jsr untlk
	lda #<dh
	ldy #>dh
	jsr strout
	lda data
	beq geht
	lda #<dife
	ldy #>dife
	jsr strout
	lda data
	jsr hexout
	jsr key0
wky	jsr get
	beq wky
	jmp spdfert
geht	sec
	lda data+4
	sbc #<huck
	sta data+2
	lda data+3
	sbc #>huck
	sta data+1
	bcs noover
	sec
	lda #<huck
	sbc data+4
	sta data+2
	lda #>huck
	sbc data+3
	sta data+1
	jsr rota
	clc
	lda latch+1
	adc #<best
	sta latch+1
	lda #>best
	adc #0
	sta latch
	lda #"+"
	bne ausgabe
noover	jsr rota
	lda zehntel
	beq ze0
	inc latch+1
	bne noik2
	inc latch
noik2	sec
	lda #10
	sbc zehntel
	sta zehntel
ze0	sec
	lda #<best
	sbc latch+1
	sta latch+1
	lda #>best
	sbc #0
	sta latch
	lda #"-"
ausgabe	pha
	lda #17
	sta spalte
	lda latch
	ldx latch+1
	jsr axout
	lda #"."
	jsr print
	ldx zehntel
	jsr x0out
	lda #30
	sta spalte
	pla
	jsr print
	ldx data+3
	jsr formnum
	lda #"."
	jsr print
	ldx data+4
	jsr x0out
	jsr return
	lda zeile
	cmp #22
	bcc noscroll
	dec zeile
	ldx #7
	jsr calcx
	jsr farbram
sl1	lda bild
	clc
	adc #40
	sta tmp
	lda bild+1
	adc #0
	sta tmp+1
	lda farb
	clc
	adc #40
	sta tmp2
	lda farb+1
	adc #0
	sta tmp2+1
	ldy #38
sl2	lda (tmp),y
	sta (bild),y
	lda (tmp2),y
	sta (farb),y
	dey
	bne sl2
	lda tmp
	sta bild
	lda tmp+1
	sta bild+1
	lda tmp2
	sta farb
	lda tmp2+1
	sta farb+1
	inx
	cpx zeile
	bcc sl1
	lda #32
	ldy #38
sl3	sta (bild),y
	dey
	bne sl3
	jsr setcur
noscroll	jsr get
	beq spdweiter
spdfert	lda #12
	jsr start
	jsr clall
	jmp mainmenu
spdweiter	lda #15
	jmp spdloop
rota	ldy #0
	ldx #0
r1	sec
	lda data+2
	sbc #60
	sta data+4
	lda data+1
	sbc #0
	sta data+3
	bcc r2
	lda data+4
	sta data+2
	lda data+3
	sta data+1
	iny
	bne r1
	dey
r3	sty latch+1
	stx zehntel
	sty data+3
	stx data+4
	cpy #2
	bcc r4
	cpy #4
	bcc r5
	lda #rot
r6	sta color
	rts
r4	lda #gruen
	bne r6
r5	lda #gelb
	bne r6
r2	sec
	lda data+2
	sbc #6
	sta data+4
	lda data+1
	sbc #0
	sta data+3
	bcc r3
	lda data+4
	sta data+2
	lda data+3
	sta data+1
	inx
	bne r2
h10	lda half
	eor #-1
	sta half
	jsr info
	jmp waita
align	jsr clrscn
	lda #<altx
	ldy #>altx
	jsr strout
	jsr line
	lda #<alanl
	ldy #>alanl
	jsr strout
	lda #<diskin
	ldy #>diskin
	jsr strout
	lda #<aweit
	ldy #>aweit
	jsr strout
	jsr info
	jsr key0
waita	jsr get
	cmp #"q"
	bne al2
	jmp mainmenu
al2	cmp #"h"
	beq h10
	cmp #"w"
	beq al3
	cmp #"1"
	beq al1
	cmp #"j"
	bne waita
	ldx #0
	txa
	beq setali
al1	ldx #1
	lda #21
	bne setali
al3	ldx #2
	lda #0
setali	stx mode
alineu	pha
	jsr clrscn
	lda #<abild
	ldy #>abild
	jsr strout
	jsr befrei
	ldx #6
senk	txa
	pha
	jsr calcx
	jsr farbram
	ldy #20
	lda #93
	ldx #1
	jsr pifout
	pla
	tax
	inx
	cpx #24
	bcc senk
	jsr setcur
	lda #1
	sta track
	pla
neutr	jsr readerg
	beq keitas
	jmp tabbr
keitas	lda track
	cmp #19
	bcc links
	ldy #23
	adc #$f2
	bcs rechts
links	ldy #2
	adc #5
rechts	tax
	clc
	jsr plot
	lda #gruen
	sta color
	ldx track
	jsr formnum
	jsr space
	ldx erg+17
	cpx track
	beq gleich
	lda #rot
	sta color
gleich	jsr formnum
	jsr space
	ldx data+2
	lda #gruen
	cpx #100
	beq is100
	lda #gelb
	cpx #94
	bcs is100
	lda #rot
is100	jsr colfor
	lda mode
	cmp #1
	beq abbr1
	jsr space
	lda half
	beq noha
	lda #3
	jsr readerg
	bne aliend
	lda #gruen
	ldx data+2
	beq is0
	lda #gelb
	cpx #81
	bcc is0
	lda #rot
is0	jsr colfor
	lda erg+19
	ora erg+18
	beq nix
	lda erg+18
	cmp erg+19
	bcs amin
	lda #"+"
	.byt $2c
amin	lda #"-"
	jsr print
	bcc nix
noha	jsr mexec
	lda #<headup
	jsr ciout
	lda #>headup
	jsr ciout
	jsr unlsn
nix	inc track
	lda track
	cmp #36
	beq abbr36
	lda #6
	jmp neutr
tabbr	lda #12
	.byt $2c
aliend	lda #9
	jsr taste
	jmp align
abbr1	lda #24
	jsr taste
	lda #27
	jsr start
	jmp align
abbr36	lda mode
	beq aliend
	lda #9
	jsr start
	lda #0
	jmp alineu
taste	jsr start
	ldx #23
	ldy #23
	clc
	jsr plot
	lda #<bittet
	ldy #>bittet
	jsr strout
	jsr key0
geky	jsr get
	beq geky
	rts
